package org.unit.testmgmt.ui.table;

import java.util.Collection;

/**
 * A table entry.
 * 
 * @author Robert Streng
 *
 */
public interface ITableEntry extends Cloneable {
	
	/**
	 * @return columns of the table viewer
	 */
	public Collection<TableViewerColumn> getTableViewerColumns();
	
	/**
	 * @param columns
	 */
	public void setTableViewerColumns(TableViewerColumns columns);

	/**
	 * @param column
	 * @param value
	 */
	public void setValue(TableViewerColumn column, Object value);

	/**
	 * @return values
	 */
	public Collection<Object> getValues();
	
	/**
	 * @param column
	 * @return value
	 */
	public Object getValue(TableViewerColumn column);
	
	/**
	 * @param columnIndex
	 * @return label
	 */
	public String getLabel(int columnIndex);

	/**
	 * Compares a table entry.
	 * 
	 * @param tblEntry
	 * @param index
	 * @return 0 if the table entry is equal
	 */
	public int compareTo(ITableEntry tblEntry, int index);
	
	/**
	 * Clones the table entry.
	 * 
	 * @return table entry
	 */
	public ITableEntry clone();
}
